home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / net / bind-contrib.tar.gz / bind-contrib.tar / contrib / msql / zone_admin < prev   
Text File  |  1996-10-25  |  4KB  |  150 lines

  1. #!/usr/local/bin/perl
  2. #
  3. # RCS Id:    $Id: zone_admin,v 8.1 1996/10/25 04:57:41 vixie Exp $
  4. #
  5. # Name:        zone_admin
  6. # Purpose:    Perform administrative tasks on msql_zones db
  7. # Author:    Christopher L Seawood
  8. # Date:        070795
  9. #
  10. # Usage:    zone_admin [msql-host]
  11. # Description:    Add, remove, edit, and list dns zones
  12. #
  13. # Tables Used:    msql_zones (read/write) & control
  14. # References:    model
  15. #
  16. # Change History:
  17. #
  18. # Date     Who  Changes Made
  19. # -------  ---  ------------------------------------------------------------
  20. # 07Jul95  cls  Original Version.
  21. # 21Jul95  cls  Redesigned with commandline args and fits latest model
  22.  
  23. {
  24. use Msql;
  25.  
  26. $host = "";
  27.  
  28. if ( @ARGV < 1 ) {
  29.     print "usage: zone_admin databasename [-hhost]\n";
  30.     exit(1);
  31. };
  32.  
  33. $dbname = shift;
  34.  
  35. while (@ARGV) {
  36.     $ack = shift;
  37.     if ( $ack =~ m/^-h\S+/ ) {
  38.     ($host = $ack ) =~ s/^-h//;
  39.     };
  40. };
  41.  
  42. ($dbh = Connect Msql $host, $dbname)
  43.     or die("Can't connect: $Msql::db_errstr\n");
  44.  
  45. do
  46. {
  47.     print <<EOD;
  48.  
  49. 1. List msql_zones entries
  50. 2. Add msql_zones entry
  51. 3. Delete msql_zones entry
  52. 4. Edit msql_zones entry (Not implemented.)
  53. 5. EXIT
  54.  
  55. EOD
  56.     do
  57.     {
  58.     print "Choice? (1-5) ";
  59.     chop ($choice = <STDIN>);
  60.     }
  61.     while ($choice !~ m/^[1-5]$/);
  62.  
  63.     if    ($choice == 1) { &list_msql_zones; }
  64.     elsif ($choice == 2) { &add_msql_zones; }
  65.     elsif ($choice == 3) { &delete_msql_zones; }
  66.     elsif ($choice == 4) { 
  67.     print "\nThis option is not implemented.\n";
  68. #    &edit_msql_zones; 
  69.     };
  70. } until ($choice == 5);
  71.     
  72. }
  73.  
  74. sub list_msql_zones {
  75.     local ($luck, $stmt,@row);
  76.     print "Enter search condition ('where' clause): ";
  77.     chop ($luck = <STDIN>);
  78.     $luck = "where $luck" if ($luck ne "");
  79.     $luck =~ tr/A-Z/a-z/;
  80.     $stmt = "select zoneid, name from msql_zones $luck order by zoneid";
  81.     ($luck = Query $dbh $stmt) or warn "Error $Msql::db_errstr\n$stmt\n";
  82.     print "\n";
  83.     if ($luck) {
  84.     $luck->DataSeek(0);
  85.     while (@row = $luck->FetchRow()){
  86.         printf("%3d, %s\n",$row[0],$row[1]);
  87.     };
  88.     };
  89.     return;
  90. };
  91.  
  92. sub add_msql_zones {
  93.     local ($last,  $stmt, $name, $id, $domain, $currip, $revip, $asstime, $sub1, $sub2, $ack, $num, @row, @row2, $lestime);
  94.  
  95.     $stmt = "select zoneid from control where one_row = 'A'";
  96.     ($last = Query $dbh $stmt) or warn "Error $Msql::db_errstr\n$stmt\n";
  97.     $id = $row[0] if (@row = $last->FetchRow());
  98.     
  99.     print "\nEnter name the zone to be added: ";
  100.     chop($name = <STDIN>);
  101.  
  102.     while ($name ne ""){
  103.     $stmt = "select name from msql_zones where name = '$name'";
  104.     ($last = Query $dbh $stmt) or warn "Error $Msql::db_errstr\n$stmt\n";
  105.     if (!($last->FetchRow())){
  106.         print "Enter zoneid: ";
  107.         chop($zoneid=<STDIN>);
  108.         printf("\n\nZone origin: %s\n",$name);
  109.         printf("Zone id:     %d\n",$zoneid);
  110.         print "\n\nDo you accept these values? (Y/N) ";
  111.         chop($ack = <STDIN>);
  112.         if ($ack =~ /[Yy]/){
  113.         $id++;
  114.         $stmt = "insert into msql_zones (name, zoneid) values ('$name', $zoneid)";
  115.         Query $dbh $stmt or warn "Error $Msql::db_errstr\n$stmt\n";
  116.         print "MSQL_ZONES entry $name with zoneid $zoneid added to Mondo.\n";
  117.         $id = $zoneid if ($zoneid > $id);
  118.         };
  119.     };
  120.     print "\nEnter name the zone to be added: ";
  121.     chop($name = <STDIN>);
  122.     };
  123.     return;
  124. }
  125.  
  126. sub delete_msql_zones {
  127.     local ($last,  @row, $stmt, $name, $zoneid, $ack, $num, $lestime);
  128.     do {
  129.     print "Enter name of msql_zones entry to be deleted: ";
  130.     chop($name = <STDIN>);
  131.     $stmt = "select name, zoneid from msql_zones where name = '$name'";
  132.     ($last = Query $dbh $stmt) or warn "Error $Msql::db_errstr\n$stmt\n";
  133.     $ack = $row[0] if (@row=$last->FetchRow());
  134.     } while ($ack ne $name);
  135.  
  136.     printf("\n\nZone name: %s\n",$row[0]);
  137.     printf("Zone id:   %d\n",$row[1]); 
  138.     print "\n\nDo you really want to remove this msql_zones entry? (Y/N) ";
  139.     chop($ack = <STDIN>);
  140.     if ($ack =~ /[Yy]/){
  141.     $stmt = "delete from msql_zones where name = '$row[0]'";
  142.     Query $dbh $stmt or warn "Error $Msql::db_errstr\n$stmt\n";
  143.     print "MSQL_ZONES entry $row[0] with zoneid $row[1] removed from Mondo.\n";
  144.     };
  145.     return;
  146. }
  147.  
  148.  
  149.  
  150.